package cn.iocoder.yudao.module.book.dal.mysql.follow;

import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.book.dal.dataobject.follow.UserFollowDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用户关注关系 Mapper
 *
 * @author 系统管理员
 */
@Mapper
public interface UserFollowMapper extends BaseMapperX<UserFollowDO> {

    /**
     * 查询用户关注的人的用户ID列表
     *
     * @param userId 用户ID
     * @return 关注的用户ID列表
     */
    List<Long> selectFolloweeIds(@Param("userId") Long userId);

    /**
     * 查询关注某用户的用户ID列表
     *
     * @param userId 用户ID
     * @return 关注者用户ID列表
     */
    List<Long> selectFollowerIds(@Param("userId") Long userId);

    /**
     * 检查是否关注
     *
     * @param followerId 关注者ID
     * @param followeeId 被关注者ID
     * @return 关注记录
     */
    UserFollowDO selectByFollowerAndFollowee(@Param("followerId") Long followerId, @Param("followeeId") Long followeeId);

    /**
     * 统计关注数
     *
     * @param userId 用户ID
     * @return 关注数
     */
    Long countFollowing(@Param("userId") Long userId);

    /**
     * 统计粉丝数
     *
     * @param userId 用户ID
     * @return 粉丝数
     */
    Long countFollowers(@Param("userId") Long userId);

}
